package com.hksj.cbm.enums;

/**
 * @author zengke
 * @version 1.0
 * @see StatusEnum
 * @since 2024/8/1 10:46
 */

import org.springframework.util.ObjectUtils;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * 状态枚举类
 */
public enum StatusEnum {

    DISABLE("0","禁用"),

    ENABLE("1","启用"),
    ;

    private String code;

    private String value;

    StatusEnum(String code, String value){
        this.code = code;
        this.value = value;
    }

    public String getCode() {
        return code;
    }

    public String getValue() {
        return value;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public static String getValue(String code){
        //获取枚举的所有属性值构成的数组 其中每一个对象就是枚举中的每一个枚举项
        StatusEnum[] enumArray = StatusEnum.values();

        //以code对枚举数组进行分组 获取枚举map集合(key:每个枚举项的code value:枚举项集合(但是由于code不会重复所有list集合中仅仅只有一个对象))
        Map<String, List<StatusEnum>> enumMap = Arrays.stream(enumArray).collect(Collectors.groupingBy(StatusEnum::getCode));

        //按照code查询枚举项集合
        List<StatusEnum> statusEnums = enumMap.get(code);

        if (ObjectUtils.isEmpty(statusEnums)){
            //若枚举项为空则直接返回null
            return null;
        }

        //获取枚举项
        StatusEnum statusEnum = statusEnums.stream().findAny().orElse(null);

        //返回value值
        return ObjectUtils.isEmpty(statusEnum) ? null : statusEnum.getValue();
    }
}
